Memory blocks are often fabricated as part of modern integrated circuits. For example, application-specific integrated circuits and programmable integrated circuits such as programmable logic device integrated circuits may contain memory blocks. Memory blocks may be provided in the form of arrays of random-access memory (RAM) cells. The memory blocks are used to handle the storage needs of the circuitry on a given integrated circuit. During normal operation of the integrated circuit, read and write operations are performed on the memory blocks.
To ensure satisfactory operation of an integrated circuit that contains memory blocks, the memory blocks are generally tested during debug and design operations. Testing may also be performed during manufacturing. It can be cumbersome or impossible to perform high-speed memory tests using only external test equipment. It is therefore often desirable to include internal test support circuitry on an integrated circuit to facilitate memory block tests. Because the internal test circuitry is incorporated into the integrated circuit that is to be tested, this type of test circuitry is sometimes referred to as built-in-self-test (BIST) circuitry.
A BIST circuit supplies a memory block with test data while systematically stepping through the addresses for the memory block. If an unexpected result is detected in response to certain test data, the BIST circuitry can conclude that the memory block contains an error. Appropriate debugging or manufacturing repair operations may then be performed. Conventional BIST architectures are satisfactory in certain situations, but can be inefficient or ineffective in other situations.
Accordingly, there is a continuing need to provide enhanced memory block built-in-self-test circuitry for testing memory blocks on an integrated circuit.